/*
1.我们有一个json文件 可以读取文件中所有的信息
2.把信息转换为对象，然后进行增删改查
3.最后把满足条件的数据，转换为json写入文件中
导入fs模块，和path模块
*/
const fs = require('fs')
const path = require('path')
//拼接json文件的绝对路径
const url = path.join(__dirname, './data1.json')
//获取数据 直接获取 不需要添加
function getData() {
    //这个方法是异步代码
    fs.readFile(url, 'utf8', (err, data) => {
        if (err) return console.log(err.message);
        // 输出结果
        let obj = JSON.parse(data)
        console.log(obj);
    })
}
// getData()
// 添加数据
function addData(obj) {
    fs.readFile(url, 'utf8', (err, data) => {
        if (err) return console.log(err.message);
        let arr = JSON.parse(data)
        obj.id = arr[arr.length - 1].id + 1
        arr.push(obj)
        fs.writeFile(url, JSON.stringify(arr), err => {
            if (err) return console.log(err.message);
            console.log('恭喜你添加成功');
        })
    })
}
// addData({
//     author: '刘慈欣',
//     bookname: '三体3-黑暗森林',
//     publisher: '武汉人民出版社'
// })

//删除数据
function delData(id) {
    // 读取信息
    fs.readFile(url, 'utf8', (err, data) => {
        // 判断
        if (err) return console.log(err.message);
        // 转换为对象
        let arr = JSON.parse(data)
        // 删除数据:遍历判断元素的id不等于参数id添加到一个新数组
        //删除数据 :filter()可以直接过滤产生一个新数组
        const newArr = arr.filter(ele => id !== ele.id)
        fs.writeFile(url, JSON.stringify(newArr), err => {
            if (err) return console.log(err.message)
            console.log('恭喜你删除成功');
        })
    })
}
// delData(5)

// 修改数据
function updateData(obj) {
    // 读取文件信息
    fs.readFile(url, 'utf8', (err, data) => {
        // 判断
        if (err) return console.log(err.message);
        // 转换成数组
        const arr = JSON.parse(data)
        //根据id查询要删除的原来的对象索引值
        const index = arr.findIndex(ele => obj.id == ele.id)
        // 根据索引值删除原有的,添加最新的
        arr.splice(index, 1, obj)
        //写入文件数据
        fs.writeFile(url, JSON.stringify(arr), err => {
            if (err) return console.log(err.message);
            console.log('恭喜你修改成功');
        })
    })
}
updateData({
    "author": "刘欣",
    "bookname": "三体-黑暗森林",
    "publisher": "人民出版社",
    "id": 5
})